home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 051-075 / disk_055 / vt100 / vt100.doc < prev    next >
Text File  |  1992-05-06  |  20KB  |  596 lines

  1. This is the documentation file for the VT100 terminal emulator by Dave
  2. Wecker (V2.6 DBW 870227). Comments/suggestions/bugs/problems/praise
  3. should be sent to:
  4.  
  5.     Dave Wecker at    ENET:    COOKIE::WECKER
  6.             ARPA:    wecker%cookie.dec.com@decwrl.dec.com
  7.             USENET:    {decvax|decwrl}!cookie.dec.com!wecker
  8.             SNAIL:    Dave Wecker
  9.                 115 Palm Springs Drive
  10.                 Colorado Springs, CO  80908
  11.  
  12. MANY pieces of code/suggestions have been sent in..
  13.  
  14.     thanks to all!
  15.  
  16. Program startup:
  17. ----------------
  18.     1> vt100 [initfile]
  19.  
  20.         - At startup, the program will search for an initialization
  21.           file to execute. It will first look for the specified
  22.           "initfile", then VT100.INIT (in the current directory)
  23.           and finally S:VT100.INIT. The format for the init file
  24.           is described later in this document.
  25.  
  26.         - The init file controls the setting of initial defaults
  27.           and screen and macro definitions.
  28.  
  29.         - If none of the files (listed above) are found, the
  30.           built-in defaults (defined in VT100.C as variables,
  31.           beginning with "p_") are used.
  32.  
  33.         - All commands are either menu or script based. Scripts
  34.           are described below.
  35.  
  36. Menus (Commands in parenthesis are keyboard bindings: Right-Amiga-chr):
  37. -----------------------------------------------------------------------
  38. File                   - file transfers
  39.     Ascii Capture        - Begin/end a script of the current session
  40.     Ascii Send        - Type a file to the host
  41.     Xmodem Receive    (A-V)    - Receive a file using XMODEM protocol
  42.     Xmodem Send    (A-^)    - Send    a file using XMODEM protocol
  43.     Kermit Get    (A-G)    - Receive files from a host KERMIT SERVER
  44.     Kermit Receive    (A-R)    - Receive files from a host KERMIT
  45.     Kermit Send    (A-S)    - Send    files to   a host KERMIT [SERVER]
  46.     Kermit Bye    (A-B)    - Terminate a host KERMIT SERVER
  47. Comm Setup            - Setup communications
  48.     Baud Rate        - Set the terminal baud rate
  49.         300, 
  50.         1200,    (A-L)
  51.         2400,    (A-H)
  52.         4800,
  53.         9600
  54.     Parity            - Type of parity
  55.         NONE,     (A-X)
  56.         MARK,
  57.         SPACE,
  58.         EVEN,    (A-E)
  59.         ODD    (A-O)
  60.     Xfer Mode
  61.         Image    (A-I)    - Send files verbatim (for UNIX hosts or
  62.                   binary files)
  63.         Text    (A-T)    - Send CR LF as line terminator and strip
  64.                   CR on received files (VMS text).
  65.         Convert        - Should KERMIT convert fnames to lower case
  66. Script                   - Script commands
  67.     Execute file        - Start up an asynchronous script file
  68.     Abort Execution        - Terminate a script file
  69. Utility               - Utility commands
  70.     Send Break    (A-.)    - send a break to the host
  71.     Hang Up            - close line (not implemented yet)
  72.     Change Dir    (A-D)    - change the local directory (for transfers)
  73.     Clear Scrn        - clear the screen (initial state)
  74.     Echo            - turn on/off half duplex mode
  75.     Wrap        (A-W)    - turn on/off long line wrapping mode
  76.     Num Key        (A-K)    - turn on/off numeric keypad mode
  77.     App Cur        (A-C)    - turn on/off application cursor mode
  78.     BS<->DEL    (A-Z)    - swap backspace and delete keys
  79.  
  80. Keypad mapping (in application keypad mode):
  81. --------------------------------------------
  82.  
  83.         AMIGA        VT100        comments
  84.         -------        -------        ---------------------------
  85.         0-9    ==    0-9
  86.         .    ==    .
  87.         ENTER    ==    ENTER        (basically, flip the bottom
  88.         -    ==    ,         2 keys up to get a VT100)
  89.         HELP    ==    -        (only free key around)
  90.         f1-f4    ==    PF1-PF4        (or any rebinding you do)
  91.         arrows    ==    arrows
  92.  
  93. Note:    Right AMIGA key in conjunction with a period (".")
  94.     will send a break to the host.
  95.  
  96.     CTRL in conjunction with an at-sign ("@") a two ("2") or a
  97.     space (" ") will send a NULL to the host.
  98.  
  99.     CTRL in conjunction with a six  ("6") will send a CTRL-^
  100.     CTRL in conjunction with a dash ("-") or question mark ("?")
  101.         will send a CTRL-_ to the host.
  102.  
  103. Multi file Xfers:
  104. -----------------
  105. The VT100 emulator supports multiple file transfers. This is
  106. specified by using a comma (",") between file names when using XMODEM
  107. or KERMIT. (NOTE: host XMODEM's normally CANNOT support multiple file
  108. transfers).
  109.  
  110. When specifying a file name to recieve by default the directory path
  111. is stripped off of the filename when sent to the host but is kept for the
  112. local file spec. eg:
  113.  
  114.         receive file: ram:file.txt,df1:newfile.bin,$
  115.  
  116. will ask the server for file.txt and put it in ram:, and get
  117. newfile.bin and put it on df1: (see explanation of "$" below). If you
  118. do a single file transfer you will get another prompt for the remote
  119. name e.g.:
  120.  
  121.         receive file: ram:file.txt
  122.         remote file name [file.txt]:  userdisk1:wantfile.txt
  123.  
  124. The same rules apply to sending multiple files therefore if you are
  125. doing multi file transfers make sure the host server is connected to
  126. the desired directory.
  127.  
  128. In addition KERMIT supports wildcards:
  129.     * = any number of characters
  130.     ? = any single character
  131. Examples:
  132.     send:    *.c,*.h,*.doc
  133.     get:    *.c,*.h,$
  134.  
  135. KERMIT receive is now smart enough to use the host filename so no
  136. filename needs to be specified on the AMIGA's side (see the CONVERT option).
  137.  
  138. Initialization and Script file operation:
  139. -----------------------------------------
  140. An initialization file (as described in the "Program Startup" section)
  141. may contain any of the commands shown below that have the word INIT in
  142. their description below. Commands that are available from scripts have
  143. the word SCRIPT in the descriptions below. All commands may be abbreviated
  144. to 3 letters and are case insensitive.
  145.  
  146. The script file can be invoked by selecting 'execute file' from the
  147. script menu. At any time you can abort the script file by selecting
  148. 'Abort Execution'. You may also invoke a script from a function key if
  149. the first character of the function key definition is the KEYSCRIPT
  150. character (e.g., define F5 as "~df1:foo.script").
  151.  
  152. During the time script file is running the terminal emulation is still
  153. active and you may type simulataneous to the script file. This may be
  154. desired if your script file is WAITing for a string or is DELAYing for
  155. a period of time etc.
  156.  
  157. Initialization and Script file Commands:
  158. ----------------------------------------
  159. #    Commented line                    (INIT,SCRIPT)
  160.    Format:
  161.     # This line is a comment
  162. ------------------------------------------------------------
  163. APPCUR    Set the application cursor mode            (INIT,SCRIPT)
  164.    Format:
  165.     APPCUR    ON/OFF or YES/NO
  166. ------------------------------------------------------------
  167. ASCII_SEND Send an ascii file to the host.        (SCRIPT)
  168.    Format:
  169.     (same format as CAPTURE)
  170. ------------------------------------------------------------
  171. BACKGROUND Define a background color            (INIT)
  172.    Format:
  173.     BACKGROUND hex        three digit hex number
  174.    Example:
  175.     BACKGROUND F00        bright red background
  176. ------------------------------------------------------------
  177. BAUD     Set baud rate                    (INIT,SCRIPT)
  178.    Format:
  179.     BAUD rate        Sets the baud rate for send/receive
  180.    Example:
  181.     BAUD 2400        Sets the baud rate at 2400 baud
  182. ------------------------------------------------------------
  183. BEEP    Beep at the console                (SCRIPT)
  184.    Format:
  185.     BEEP
  186. ------------------------------------------------------------
  187. BOLD     Define a color for bold                (INIT)
  188.    Format:
  189.     (same as BACKGROUND)
  190. ------------------------------------------------------------
  191. BREAK    Set the break time (for an SB command)        (INIT,SCRIPT)
  192.    Format:
  193.     BREAK value        Value is in micro-seconds
  194.    Example:
  195.     BREAK 750000
  196. ------------------------------------------------------------
  197. BUFFER     Set transmission buffer size            (INIT)
  198.    Format:
  199.     BUFFER n        Number of bytes to buffer
  200.    Example:
  201.     BUFFER 512
  202. ------------------------------------------------------------
  203. CAPTURE    To start/stop ascii file capture.        (SCRIPT)
  204.    Format:
  205.     CAPTURE    file        Start ascii capturing
  206.     CAPTURE            End ascii capturing
  207. ------------------------------------------------------------
  208. CD     To change the local directory            (SCRIPT)
  209.    Format:
  210.     CD    newdir        set a new directory for file transfers
  211.    Example:
  212.     CD    DF1:foo/bar    set the directory as specified
  213. ------------------------------------------------------------
  214. CONVERT    Tell KERMIT whether or not to convert filenames    (INIT,SCRIPT)
  215.    Format:
  216.     CONVERT    ON/OFF or YES/NO
  217.    Example:
  218.     CONVERT    ON        Filenames will be down cased
  219. ------------------------------------------------------------
  220. CURSOR     Define a color for the cursor            (INIT)
  221.    Format:
  222.     (same as BACKGROUND)
  223. ------------------------------------------------------------
  224. DELAY     Suspends script file for a specified time    (SCRIPT)
  225.    Format:        
  226.         DELAY     n        Suspends execution for n seconds
  227.    Example:
  228.     DELAY    2        Suspends for 2 seconds
  229. ------------------------------------------------------------
  230. DEPTH     Define the depth of the window/screen        (INIT)
  231.    Format:
  232.     DEPTH n        Number of planes in window/screen
  233.    Example:
  234.     DEPTH 1        Minimum depth
  235.     DEPTH 2        Same as Workbench
  236. ------------------------------------------------------------
  237. ECHO    Turn on/off local echo                (INIT,SCRIPT)
  238.    Format:
  239.     ECHO    ON/OFF or YES/NO
  240.    Example:
  241.     ECHO    ON        Half duplex mode
  242. ------------------------------------------------------------
  243. EXIT    Ends execution of the current script file.    (INIT,SCRIPT)
  244.    Format:
  245.     EXIT            Exit the current script/init file
  246.     EXIT VT100        Exit vt100 program (from SCRIPT only)
  247.     EXIT newscript        Exit this file and start up newscript
  248.    Example:
  249.     EXIT DF1:FOO.BAR    Exit the current file and start FOO.BAR
  250. ------------------------------------------------------------
  251. F    Define a function key                (INIT,SCRIPT)
  252.    Format:
  253.     F n string        Define Function key n to be string
  254.    Example:                (see SEND for string format)
  255.     F 1 "dir^M"        Define F1 is the string dir<cr>
  256.     F 11 "help"        Define Shifted F1 as the string help
  257.     F 20 ^C            Define Shifted F10 as a control-C
  258. ------------------------------------------------------------
  259. FOREGROUND Define a color for the foreground        (INIT)
  260.    Format:
  261.     (same as BACKGROUND)
  262. ------------------------------------------------------------
  263. GOTO    Jumps to a different part of the script file.    (SCRIPT)
  264.    Format:
  265.     GOTO label        Jumps to a line beginning with label:
  266.                 Jumps may be forward or backward.
  267.    Example:
  268.     FOO:            Sets up a label
  269.     ...
  270.     GOTO FOO        Jumps to FOO
  271. ------------------------------------------------------------
  272. INTERLACE Turn on/off interlace                (INIT)
  273.    Format:
  274.     INTERLACE ON/OFF or YES/NO
  275.    Example:
  276.     INTERLACE ON        Use interlacing
  277. ------------------------------------------------------------
  278. KB      Send a BYE packet to a host KERMIT server.    (SCRIPT)
  279.    Format:
  280.     KB             Shut down server.
  281. ------------------------------------------------------------
  282. KEYSCRIPT Define a new keyscript character        (INIT,SCRIPT)
  283.    Format:
  284.     KEYSCRIPT hex        New character in hex
  285.    Example:
  286.     KEYSCRIPT 7E        Use "~" as the new character
  287. ------------------------------------------------------------
  288. KG      Gets files from host.                (SCRIPT)
  289.    Format:
  290.     (same format as KS)     Get from server
  291. ------------------------------------------------------------
  292. KR      Receives a file from kermit host.        (SCRIPT)
  293.    Format:
  294.     (same format as KS)     Not from a server
  295. ------------------------------------------------------------
  296. KS      Sends files via kermit to the host.        (SCRIPT)
  297.    Format:
  298.     KS file            Send one file
  299.     KS file1,file2,...    Send multiple files
  300.     KS file1,file2,...,$    Send multiple files and shut down server
  301.    Example:
  302.     KS foo.bar        sends foo.bar (note no quoting is used)
  303.     KS foo1,foo2,foo3    sends three files
  304.     KS foo1,foo2,foo3,$    sends three files and shuts down server
  305. ------------------------------------------------------------
  306. LINES    Define number of lines in the window        (INIT)
  307.    Format:
  308.     LINES n
  309.    Example:
  310.     LINES 24        Maximum for non-interlace
  311.     LINES 48        Maximum for interlaced
  312. ------------------------------------------------------------
  313. MODE    Set a transfer mode for KERMIT to use        (INIT,SCRIPT)
  314.    Format:
  315.     MODE type        type of transfers to perform
  316.    Example:
  317.     MODE IMAGE        image mode transfers
  318.     MODE CRLF        <CR><LF> text transfers (VMS Kermit).
  319. ------------------------------------------------------------
  320. NUMKEY    Numeric keypad mode                (INIT,SCRIPT)
  321.    Format:
  322.     NUMKEY    ON/OFF or YES/NO
  323.    Example:
  324.     NUMKEY    ON        Keypad is pure numbers
  325. ------------------------------------------------------------
  326. ON    Peforms a command every time string is received    (SCRIPT)
  327.    Format:
  328.         ON      "string"  cmd    Execute cmd when string is received.
  329.                 Only one ON string may be installed at a
  330.                 time.
  331.  
  332.                   If cmd is a GOTO and we were previously
  333.                 WAITing for a string the WAIT is aborted and
  334.                 execution resumes at the new label.
  335.  
  336.                           If cmd is not SEND and we were previously
  337.                 DELAYing, then the DELAY is aborted and the
  338.                 cmd is executed, followed by the next command
  339.                 after the DELAY.
  340.  
  341.                 If cmd is a SEND and we were previously
  342.                 DELAYing, then the DELAY is continued.
  343.    Example:
  344.         ON  "LOSS CARRIER" GOTO RESTART
  345.                 If modem drops carrier, try to redial
  346.         ON  "--more--" SEND " "
  347.                 Send a space every time --more-- is received
  348. ------------------------------------------------------------
  349. PARITY    Sets the parity                    (INIT,SCRIPT)
  350.    Format:
  351.     PARITY    type        Set the parity type
  352.    Example:
  353.     PARITY    NONE        no parity
  354.     PARITY    MARK        mark parity
  355.     PARITY    SPACE        space parity
  356.     PARITY    ODD        odd parity
  357.     PARITY    EVEN        even parity
  358. ------------------------------------------------------------
  359. SB    Sends a break character to the host        (SCRIPT)
  360.    Format:            Note that any pending character to send
  361.     SB                is aborted by this call
  362. ------------------------------------------------------------
  363. SCREEN    Define the screen type                (INIT)
  364.    Format:
  365.     SCREEN type        type of screen to use
  366.    Example:
  367.     SCREEN WORKBENCH    use the workbench screen
  368.     SCREEN CUSTOM        use a custom screen
  369. ------------------------------------------------------------
  370. SEND     Sends a string or character to the host.    (SCRIPT)
  371.    Format:
  372.     SEND    "string"    Sends a string to the host. Beginning and
  373.                 ending double quotes (") are required. A
  374.                 carat (^) may be used to send control chars.
  375.                 Two carats transmits a carat character.
  376.         SEND    chr               Sends a single character.
  377.         SEND    ^chr               Sends a single control character. The chr
  378.                 is NOT case sensitve
  379.    Example:
  380.     SEND    "mail"        Send the string mail
  381.     SEND    "dir^M"        Send the string dir followed by a <CR>
  382.     SEND    a        Send the letter a
  383.     SEND    ^C        Send a control C
  384.     SEND    "abc^^def"    Send the string abc^def
  385.     SEND    ^^        Send a control-uparrow
  386.     SEND    "        Send the '"' character
  387. ------------------------------------------------------------
  388. SWAP     Swap the meanings of backspace and delete keys    (INIT,SCRIPT)
  389.    Format:
  390.     SWAP ON/OFF or YES/NO
  391.    Example:
  392.     SWAP NO        Use standard definitions
  393. ------------------------------------------------------------
  394. VOLUME    Set the BELL volume                (INIT)
  395.    Format:
  396.     VOLUME n
  397.    Example:
  398.     VOLUME 0        Use a visual bell
  399.     VOLUME 64        Use a loud audible bell
  400. ------------------------------------------------------------
  401. WAIT     Suspends until a certain string is received.    (SCRIPT)
  402.    Format:
  403.     WAIT    "string"    Same rules for string as SEND
  404.     WAIT            Enter an endless wait. Usually used after
  405.                 some "ON" commands have been set up. Can
  406.                 still be aborted via the script menu.
  407.    Example:
  408.         WAIT    "User:"        Waits for the string User:
  409. ------------------------------------------------------------
  410. WBCOLORS Force usage of workbench colors        (INIT)
  411.    Format:
  412.     WBCOLORS ON/OFF or YES/NO
  413.    Example:
  414.     WBCOLORS YES        Workbebch colors will be used for all
  415. ------------------------------------------------------------
  416. WRAP    Set long line wrapping                (INIT,SCRIPT)
  417.    Format:
  418.     WRAP    ON/OFF or YES/NO
  419.    Example:
  420.     WRAP    ON        Long lines will wrap
  421. ------------------------------------------------------------
  422. XR      Receives a file via XMODEM.            (SCRIPT)
  423.    Format:
  424.     (same format as KS)
  425. ------------------------------------------------------------
  426. XS      Sends a file via XMODEM.            (SCRIPT)
  427.    Format:
  428.     (same format as KS)
  429. ------------------------------------------------------------
  430.  
  431.  
  432. ----------------------------
  433. Initialization file example:
  434. ----------------------------
  435.  
  436. #####################################################################
  437. #
  438. #    VT100 sample initialization file
  439. #    v2.6 870222 DBW    - Dave Wecker standard defaults
  440. #
  441. # Hash mark at the beginning of a line denotes a comment.
  442. # White space (space(s) or tab(s)) delimit fields.
  443. # Case ignored except for function key bindings.
  444. #
  445. # All items in this file overide variables of the same name in VT100.C
  446. # (all variables in vt100.c have a "p_" prepended to them)
  447. #
  448. #####################################################################
  449. #
  450. APPCUR        ON        # Application keypad mode is being used
  451. BACKGROUND    000        # Colors are in hex RGB from 000 to FFF
  452. BAUD        2400        # Anything after required fields is ignored
  453. BOLD        a00        # Color for bold highlighting (in custom)
  454. BREAK        750000        # Break time in micro-seconds
  455. BUFFER        512        # 512 <= Input buffer size <= 2048
  456. CONVERT        ON        # KERMIT should downcase host names
  457. CURSOR        00a        # Color for cursor (in custom screen)
  458. DEPTH        1        # number of bit planes to use (1 or 2)
  459. ECHO        OFF        # Full duplex mode in use
  460. FOREGROUND    950        # Colors are only used on the custom screen
  461. INTERLACE    ON        # ON for CUSTOM or interlaced workbench
  462. KEYSCRIPT    7E        # Hex value for script introducer
  463. LINES        48        # normal <= 24 interlaced <= 48
  464. MODE        CRLF        # IMAGE or CRLF (for KERMIT transfers)
  465. NUMKEY        ON        # The keypad should be numeric
  466. PARITY        NONE        # NONE (= 8 bit), MARK, SPACE, ODD or EVEN
  467. SCREEN        CUSTOM        # may be CUSTOM or WORKBENCH
  468. SWAP        OFF        # Don't Swap the Back-space and Delete keys
  469. VOLUME        64        # Beep Volume (0 = Visual Beep)
  470. WBCOLORS    YES        # ignore custom colors and use defaults
  471. WRAP        OFF        # Auto wrap ON or OFF
  472. #
  473. # Function bindings (strings to type when any of F1 - F10 are pressed)
  474. #    f <num>        = function key
  475. #    f <num>+10    = shifted function key
  476. #
  477. # The string specified must be the same format as the SEND command:
  478. #    ^    = control next character
  479. #    ^^    = up arrow
  480. #
  481. # Sample control characters:
  482. #    ^[    = escape    ^M    = carriage return
  483. #    ^J    = line feed    ^L    = form feed
  484. #
  485. # If the first character of the string is a script introducer
  486. # (KEYSCRIPT) then the string is interpreted as a script filename
  487. # to be executed when the key is pressed.
  488. #
  489. # Examples of bindings:
  490. #
  491. f 1    "^[OP"            # f1-f4 = PF1 - PF4 on a VT100
  492. f 2    "^[OQ"
  493. f 3    "^[OR"
  494. f 4    "^[OS"
  495. #
  496. # f5,6,7 = scripts to execute (assuming that KEYSCRIPT = '~' = 0x7E)
  497. #
  498. f 5    "~df1:vt100_source/dialwork.script"
  499. f 6    "~df1:vt100_source/sendvt100.script"
  500. f 7    "~df1:vt100_source/getpics.script"
  501. #
  502. f 8    "MAIL^M"        # Reads my mail (note embedded <CR>)
  503. f 9    "NOTE^M"        # Reads conferences
  504. f 11    "$2400!"        # dials the phone to work
  505. f 12    "$bbs1!"        # dials the phone to billboard 1
  506. f 13    "$bbs2!"        # dials the phone to billboard 2
  507. f 14    "$bbs3!"        # dials the phone to billboard 3
  508. #
  509. # all done with init, now execute script as startup sequence
  510. #
  511. exit df1:vt100_source/dialwork.script
  512.  
  513. --------------------
  514. Script file example:
  515. --------------------
  516.  
  517. ###################################################################
  518. # Script to dial work (dialwork.script)
  519. #    v2.6    870222    DBW
  520. ###################################################################
  521. #
  522. # Make sure that we have all the parameters we want
  523. #
  524.     DELAY    2
  525.     BAUD    2400
  526.     PARITY    NONE
  527.     MODE    CRLF
  528.     BREAK    750000
  529.     SB
  530. #
  531. # First get the modem's attention:
  532. #
  533. Start:
  534.     DELAY 1
  535.     ON "Ready" GOTO Dial
  536.     SEND ^B
  537.     DELAY 2
  538.     GOTO Start
  539. #
  540. # Now dial the 2400 baud line to work:
  541. #
  542. Dial:
  543.     ON "Attached" GOTO Login
  544.     SEND "$2400!"
  545.     DELAY 30
  546.     GOTO Start
  547. #
  548. # We got attached, so keep hitting return until the Gandalf terminal
  549. # handler wakes up:
  550. #
  551. Login:
  552.     ON "enter" GOTO Gandalf
  553.     DELAY 1
  554.     SEND ^M
  555.     GOTO Login
  556. #
  557. # Now connect from the Gandalf to the terminal server (ts2):
  558. # (when it asks for a password I need to type the password 
  559. # manually here)
  560. #
  561. Gandalf:
  562.     DELAY 2
  563.     SEND "ts2^M"
  564.     WAIT "class start"
  565. #
  566. # Keep sending <CR>'s until the LAT prompts for a username:
  567. #
  568. WaitLat:
  569.     DELAY 2
  570.     ON "username>" GOTO Lat
  571.     SEND ^M
  572.     GOTO WaitLat
  573. #
  574. # Tell the LAT that it's me, and connect to the "cookie cluster"
  575. # (my host systems). Tell the cluster my user name.
  576. # (when it asks for a password I need to type the password
  577. # manually here)
  578. #
  579. Lat:
  580.     SEND "wecker^M"
  581.     DELAY 1
  582.     SEND "connect cookie^M"
  583.     WAIT "Username:"
  584.     SEND "WECKER^M"
  585.     WAIT "at home"
  586.     SEND "^M^Mn^M"
  587. #
  588. # Got through all the LOGIN garbage, so let's do some work.
  589. #
  590.     WAIT "$ "
  591. #
  592. # All done so stop:
  593. #
  594.     EXIT
  595.  
  596.